namespace Test.ConsoleProgram.Algorithm.Solution
{
    [TestDescription("算法: 0925. 长按键入")]
    public class No0925_IsLongPressedName : AbsBaseTestItem
    {
        /*
        你的朋友正在使用键盘输入他的名字 name。偶尔，在键入字符 c 时，按键可能会被长按，而字符可能被输入 1 次或多次。
        你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字（其中一些字符可能被长按），那么就返回 True。
        */
        public override void OnTest()
        {
            Assert.TestExe(IsLongPressedName, "alex", "aaleex", true);
            Assert.TestExe(IsLongPressedName, "saeed", "ssaaedd", false);
            Assert.TestExe(IsLongPressedName, "leelee", "lleeelee", true);
            Assert.TestExe(IsLongPressedName, "laiden", "laiden", true);
        }

        public bool IsLongPressedName(string name, string typed)
        {
            int len_name = name.Length;
            int len_typed = typed.Length;
            int i = 0, j = 0;
            while (j < len_typed)
            {
                if (i < len_name && name[i] == typed[j])
                {
                    i++;
                    j++;
                }
                else if (j > 0 && typed[j] == typed[j - 1])
                {
                    j++;
                }
                else
                {
                    return false;
                }
            }
            return i == len_name;
        }
    }
}
